/*
**  Copyright (c) 2014 Michael Liu(michael.liu.point@gmail.com).
**
**  Project: Gateway Unified Management Platform
**  File:      pfdep_if.h
**  Author:  Michael
**  Date:    03/20/2014
**
**  Purpose:
**    platform depend interface defines.
*/

#ifndef __PLATFORM_DEP_IF_H__
#define __PLATFORM_DEP_IF_H__

#ifdef __cplusplus
extern "C" {
#endif				/* __cplusplus */

/* Include files. */

#include "common.h"
#include "cmrc.h"
#include "list.h"
#include "dpmgr.h"
#include "eamgr.h"
#include "samgr.h"

/* Macro constant definitions. */

/* Type definitions. */

/* External function declarations. */

	extern e_ret pf_dep_wlancli_set_linkenable(tdp_if * dp_if, e_bool enable, e_bool save);
	extern e_ret pf_dep_wlancli_set_ssid(tdp_if * dp_if, char *ssid);
	extern e_ret pf_dep_wlancli_set_bssid(tdp_if * dp_if, char *bssid);
	extern e_ret pf_dep_wlancli_set_channel(tdp_if * dp_if, unsigned char channel, unsigned char ext_channel);
	extern e_ret pf_dep_wlancli_set_sec_stuff(tdp_if * dp_if, unsigned char auth_mode,
						  unsigned char enc_method, twlan_sec_key * sec_key);
	extern e_ret pf_dep_wlancli_scan_aps(tdp_if * dp_if, twlan_cli_if_link_status ** aps);
	extern e_ret pf_dep_wlancli_get_linkstatus(tdp_if * dp_if, twlan_cli_if_link_status ** aps);

	extern e_ret pf_dep_wlanap_set_ssid(tdp_if * dp_if, char *ssid, e_bool * reset);
	extern e_ret pf_dep_wlanap_set_sec_stuff(tdp_if * dp_if, unsigned char auth_mode,
						 unsigned char enc_method, twlan_sec_key * sec_key, e_bool * reset);
	extern e_ret pf_dep_wlanap_set_mode(tdp_if * dp_if, unsigned char mode);
	extern e_ret pf_dep_wlanap_set_bw(tdp_if * dp_if, unsigned char bw);
	extern e_ret pf_dep_wlanap_set_sgi(tdp_if * dp_if, e_bool sgi);
	extern e_ret pf_dep_wlanap_set_txpwr(tdp_if * dp_if, unsigned char txpwr);
	extern e_ret pf_dep_wlanap_set_channel(tdp_if * dp_if, unsigned short channel, e_bool * reset);
	extern e_ret pf_dep_wlanap_set_beacon_interval(tdp_if * dp_if, unsigned short beacon_interval);
	extern e_ret pf_dep_wlanap_set_hide_ssid(tdp_if * dp_if, e_bool hide_ssid);
	extern e_ret pf_dep_wlanap_set_sta_isolate(tdp_if * dp_if, e_bool sta_isolate);
	extern e_ret pf_dep_wlanap_set_acl(tdp_if * dp_if, twlan_ap_acl * acl);
	extern e_ret pf_dep_wlanap_set_wmm_apsd_dls(tdp_if * dp_if, e_bool wmm_apsd, e_bool wmm_dls, e_bool * reset);
	extern e_ret pf_dep_wlanap_set_bgprotection(tdp_if * dp_if, unsigned short bg_protection);
	extern e_ret pf_dep_wlanap_set_ht_extcha(tdp_if * dp_if, unsigned short ht_extcha);
	extern e_ret pf_dep_wlanap_set_rekey(tdp_if * dp_if, unsigned long rekey, e_bool * reset);
	extern e_ret pf_dep_wlanap_set_rtsthreshold(tdp_if * dp_if, unsigned int rtsthreshold);
	extern e_ret pf_dep_wlanap_set_fragthreshold(tdp_if * dp_if, unsigned int fragthreshold);
	extern e_ret pf_dep_wlanap_set_dtimperiod(tdp_if * dp_if, unsigned char dtimperiod);
	extern e_ret pf_dep_wlanap_set_txburst(tdp_if * dp_if, e_bool txburst);
	extern e_ret pf_dep_wlanap_set_pktaggregate(tdp_if * dp_if, e_bool pktaggregate);
	extern e_ret pf_dep_wlanap_set_greenap(tdp_if * dp_if, e_bool greenap);
	extern e_ret pf_dep_wlanap_set_greenfied(tdp_if * dp_if, e_bool greenfield);
	extern e_ret pf_dep_wlanap_set_radio_on(tdp_if * dp_if, e_bool radio_on);
	extern e_ret pf_dep_wlanap_reset(tdp_if * dp_if);
	extern e_ret pf_dep_wlanap_get_linkstatus(tdp_if * dp_if, twlan_ap_if_link_status ** clients);

	extern e_ret pf_dep_ether_get_linkstatus(tdp_if * dp_if, teth_if_link_status ** status);
	extern e_ret pf_dep_vlan_if_get_linkstatus(tdp_if * dp_if, teth_if_link_status ** status);

	extern e_ret pf_dep_wlan_set_wsc_get_conf(tdp_if * dp_if, const unsigned char mode);
	extern e_ret pf_dep_wlan_set_wsc_mode(tdp_if * dp_if, const unsigned char mode);
	extern e_ret pf_dep_wlan_set_wsc_pin_code(tdp_if * dp_if, unsigned long pin);
	extern e_ret pf_dep_wlan_set_wsc_vendor_pin_code(tdp_if * dp_if, unsigned long pin);
	extern e_ret pf_dep_wlan_set_wsc_v2_support(tdp_if * dp_if, const unsigned char enable);
	extern e_ret pf_dep_wlan_set_wsc_conf_mode(tdp_if * dp_if, const unsigned char mode);
	extern e_ret pf_dep_wlan_set_wsc_conf_status(tdp_if * dp_if, const unsigned char status, e_bool save);
	extern e_ret pf_dep_wlan_get_wsc_profile(tdp_if * dp_if, twlan_wsc_profile * prof);
	extern e_ret pf_dep_wlan_get_wsc_status(tdp_if * dp_if, int *status);
	extern const char *pd_def_get_wsc_status_str(int status);

	extern e_ret pf_dep_wlan_set_wsc_enable(tdp_if * dp_if, const e_bool enable);
	extern e_ret pf_dep_wlan_set_wsc_configed(tdp_if * dp_if, const e_bool configed);
	extern e_ret pf_dep_wlan_set_wsc_gen_pin_code(unsigned int *pin);

	extern e_ret pf_dep_set_if_netcfg_conntype(tdp_if * dp_if, unsigned char conntype);
	extern e_ret pf_dep_set_if_netcfg_pptp(tdp_if * dp_if, tpptp_netcfg * pptp_netcfg);
	extern e_ret pf_dep_set_if_netcfg_pppoe(tdp_if * dp_if, tpppoe_netcfg * pppoe_netcfg);
	extern e_ret pf_dep_set_if_netcfg_ppp(tdp_if * dp_if, tppp_modem_netcfg * ppp_netcfg);
	extern e_ret pf_dep_set_if_netcfg_static(tdp_if * dp_if, tstatic_netcfg * static_netcfg);
	extern e_ret pf_dep_set_if_netcfg_mtu(tdp_if * dp_if, unsigned short mtu);
	extern e_ret pf_dep_set_if_netcfg_dns(tdp_if * dp_if, unsigned char manual, tdp_if_dns * dns);
	extern e_ret pf_dep_set_if_netcfg_dhdpd(tdp_if * dp_if, tdhcpd_cfg * dhcpd_cfg);

/* Macro API definitions. */

/* Global variable declarations. */

#ifdef __cplusplus
}				/* extern "C" */
#endif				/* __cplusplus */
#endif				/* __PLATFORM_DEP_IF_H__ */
